使用Gitlab Jenkins Docker建立CI部署方案

本文Docker部分内容忽略

Git

Git是一个分布式版本控制软件,与svn不同,不再依赖唯一的、集中式的版本库,而是每个开发者本地都拥有一份完整的版本库。 Git并不排斥集中式的使用模式,但更倾向于将集中式版本库称为共享版本库。

GitLab

GitLab 是一个数据库支持的 web 应用,与Github类似,相信大家都用过Github,那么再接触GitLab就很简单了。

Docker安装GitLab
sudo docker pull gitlab/gitlab-ce:latest
启动GitLab
sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest
服务地址
http://10.89.9.141
使用流程
  1. 登录GitLab
  2. 切换到Projects,点击 New project
  3. 填写项目名和项目描述信息,确认你的项目可见等级是Private,Internal还是Public
  4. 设置git 全局配置

    git config --global user.name "tianpf"
    git config --global user.email "tianpf@ifeng.com"
    
  5. 创建一个仓库repository
git clone ssh://git@gitlab.example.com:122/tianpf/aaa.git
cd aaa
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
  1. commit到本地并push到remote

Jenkins

Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。是开源的java语言开发持续集成工具,支持CI,CD。
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。

maven配置

系统管理—全局工具配置(Maven Configuration)配置

JDK配置

系统管理—全局工具配置(JDK)配置

GIT配置

手动安装的git,web界面只需添加具体可执行路径即可,这里还要注意Git和maven的使用需要再系统管理-插件管理中安装相应的插件才能使用。

使用流程
  1. 提交完代码到remote后,新建job
  2. 输入job名称,选择构建一个自由风格的软件项目/构建一个maven项目(安装maven插件后才会出现这一选项),这里可以根据自己自动化构建的项目类型选择相应的项目构建方式,如springboot的项目应该选择构建一个maven项目,vue项目应该选择自由风格的项目。
  3. 添加项目描述,源码管理选择相应的版本管理工具,我们使用的是git,选择git后,填写Repository URL和Credentials,可以是用户名密码(如果添加了ssh key可以直接使用)
  4. build 的话 直接使用 Root POM - pom.xml
  5. 很多时候我们构建打包完成需要做一些个性化部署的事情(当然这些部分也可以在构建后操作里添加,看自己喜好)我们要写成脚本添加到Post Steps,如下:

    #!/bin/sh
    
    taskname='aaaaaa'
    cd /data/shell
    docker ps | grep tomcat | awk '{print $1}' > container.log
    var=$(cat container.log)
    echo ${var}
    docker kill ${var}
    
    # docker inspect -f   '{{.Id}}' tomcat > container2.log
    # var2=$(cat container2.log)
    # var2=${var2##*:}
    # echo ${var2}
    
    cd /root/jenkins/workspace/${taskname}/target 
    cp /root/jenkins/workspace/${taskname}/target/ifengBI_master-0.0.1-SNAPSHOT.war /root/jenkins/workspace/${taskname}/target/ifengBI_master.war
    cp /root/jenkins/workspace/${taskname}/target/ifengBI_master.war /data/tomcat_fridaybi_server/
    docker run -p 9089:8080 -v /data/tomcat_fridaybi_server:/usr/local/tomcat/webapps -d tomcat
    echo "sucess"
    
  1. 构建设置可以添加E-mail Notification,发布完成可以给配置的邮件发送邮件。
  2. 到此,一次打包发布就over了,喝杯茶吧~

showdoc

简单介绍一下showdoc吧,就是做API文档的,现在国内国外这种文档平台还是不少的,那么简单介绍一下showdoc的优势

  1. 支持markdown语法(所有的api接口写作现在都支持这个吧,因为他现在太方便了)
  2. 支持多用户协作,你可以在项目下面随意添加多个用户一起完成api文档的写作。
  3. 可以分享并导出项目,生成需要的文档格式如doc,可以离线浏览
  4. 支持响应式,手机电脑同样精彩
  5. 支持项目转让
  6. 支持模版插入
  7. 支持历史版本,你可以把操作恢复到以前的版本。
  8. 可以通过一个在线测试api的工具,直接生成markdown,你几乎不用写代码就能过所有的参数自动生成

还是比较方便的,大家可以用用看看

这是官方地址

https://www.showdoc.cc/web/#/  

这是我们的服务

http://10.89.9.141:4999/web/#/user/login?redirect=%2Fitem%2Findex

Sonarqube

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

这个平台稍微有点重,评估了下现阶段我们还用不太到,后续补充。
欢迎斧正~